"use strict";
/*
 * @Author: Fan Dong
 * @Date: 2021-07-09 11:10:13
 * @LastEditors: Fan Dong
 * @LastEditTime: 2021-07-09 11:13:15
 * @Description: 文件描述
 * @FilePath: \learn-typescript\ts\modules\Animal.ts
 */
/*
 * @Author: Fan Dong
 * @Date: 2021-07-09 10:40:55
 * @LastEditors: Fan Dong
 * @LastEditTime: 2021-07-09 10:55:28
 * @Description: 文件描述
 * @FilePath: \learn-typescript\ts\9.命名空间.ts
 */
Object.defineProperty(exports, "__esModule", { value: true });
exports.B = exports.A = void 0;
/* 命名空间：
      在代码量较大的情况下，为了避免各种命名冲突，可将相似功能的函数，类，接口等放置到命名空间内
      同JAVA的包，NET的命名空间一样，ts的命名空间可以江代码包裹起来，只对外暴露需要的外部访问的对象，命名空间内的对象通过export

  命名空间和模块的区别：

      命名空间：内部模块，主要用于组织代码，避免命名冲突。
      模块：ts的外部模块的简称，侧重代码的复用，一个模块里可能会有多个命名空间
*/
var A;
(function (A) {
    var Dog = /** @class */ (function () {
        function Dog(name) {
            this.name = name;
        }
        Dog.prototype.eat = function () {
            console.log(this.name + "吃狗粮");
        };
        return Dog;
    }());
    A.Dog = Dog;
    var Cat = /** @class */ (function () {
        function Cat(theName) {
            this.name = theName;
        }
        Cat.prototype.eat = function () {
            console.log(this.name + "吃猫粮");
        };
        return Cat;
    }());
    A.Cat = Cat;
    // let dog = new Dog('狗狗');
    // dog.eat();
})(A = exports.A || (exports.A = {}));
var B;
(function (B) {
    var Dog = /** @class */ (function () {
        function Dog(name) {
            this.name = name;
        }
        Dog.prototype.eat = function () {
            console.log(this.name + "吃狗粮");
        };
        return Dog;
    }());
    B.Dog = Dog;
    var Cat = /** @class */ (function () {
        function Cat(theName) {
            this.name = theName;
        }
        Cat.prototype.eat = function () {
            console.log(this.name + "吃猫粮");
        };
        return Cat;
    }());
    B.Cat = Cat;
    // let dog = new Dog('狗狗');
    // dog.eat();
})(B = exports.B || (exports.B = {}));
// let d1 = new A.Dog('狼狗')
// d1.eat();
